package com.yuw.exceptiondemo;

import java.io.FileInputStream;
import java.io.FileNotFoundException;

public class TestDriver {
    public static void main(String[] args) {
        // 调用子方法
        test01();

        // 调用子方法
        try {
            test02();
        } catch (Exception e) {
            e.printStackTrace();
            // 这里会有针对发生非异常情况下的业务逻辑处理代码
        }

        System.out.println("==========================");
        test03();
    }

    /**
     * 异常应用
     * 给定一个字符串，手动判断字符串的长度
     */
    public static void test03() {
        // 被处理的字符串
        String string = "sljf";
        System.out.println("处理的字符串：" + string);
        // 字符串中的字符的个数
        int count = 0;
        // 遍历字符串中的每一个字符
        try {
            while (true) {
                string.charAt(++count);
            }
        } catch (Exception e) {
            // 发生异常的时候，说明字符串数完了
            System.out.println("字符串的长度为：" + count);
        }
    }


    /**
     * 手动抛出异常
     */
    public static void test02() throws Exception {
        int i = 0;
        int j = 5;
        if (i == 0) {
            // 手动抛出异常，进行预警
            throw new Exception("除数不能为零");
        }
        // 保证正常执行
        int k = j / i;
    }

    /**
     * 异常处理机制
     */
    public static void test01() {
        //调用子方法
        try {
            test01_sub();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }

    /**
     * 异常处理——throws方式
     */
    public static void test01_sub() throws FileNotFoundException {
        FileInputStream fileInputStream = new FileInputStream("");
    }
}
